package pe.edu.sistemas.sisdiho.mappers;

import java.util.Date;
import java.sql.Time;
import java.util.List;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import pe.edu.sistemas.sisdiho.entities.Peticion;
import pe.edu.sistemas.sisdiho.entities.RegistroHorario;

public interface PeticionMapper {
	@Insert ("insert into PETICION_EVENTO "
			+ "(ID_PETICION , NOMBRE_EVENTO, MOTIVO, FECHA , HORA_INICIO , HORA_FIN , NUMERO_OCURRENCIA , ID_AULA , ID_PERSONA , DIA_SEMANA , SOY_USUARIO , NOMBRE_USUARIO,EMAIL,TIPO,ALQUILER) "
			+ "VALUES "
			+ "( NULL, #{NOMBRE_EVENTO}, #{MOTIVO} , #{FECHA} , #{HORA_INICIO} , #{HORA_FIN} , #{NUMERO_OCURRENCIA} , #{ID_AULA} , #{ID_PERSONA} , #{DIA_SEMANA}, #{SOY_USUARIO}, #{NOMBRE_USUARIO},#{EMAIL},#{TIPO},#{ALQUILER})")
	void registrarPeticion(@Param("NOMBRE_EVENTO") String NOMBRE_EVENTO , @Param("MOTIVO") String MOTIVO ,@Param("FECHA") Date FECHA , @Param("HORA_INICIO") Time HORA_INICIO , @Param("HORA_FIN") Time HORA_FIN , @Param("NUMERO_OCURRENCIA") int NUMERO_OCURRENCIA ,@Param("ID_AULA") int ID_AULA,@Param("ID_PERSONA") int ID_PERSONA,@Param("DIA_SEMANA") int DIA_SEMANA,@Param("SOY_USUARIO") int SOY_USUARIO,@Param("NOMBRE_USUARIO") String NOMBRE_USUARIO,@Param("EMAIL") String EMAIL,@Param("TIPO") int TIPO,@Param("ALQUILER") int ALQUILER);
	@Insert ("insert into PETICION_EVENTO "
			+ "(ID_PETICION , NOMBRE_EVENTO, MOTIVO, FECHA , HORA_INICIO , HORA_FIN , NUMERO_OCURRENCIA , ID_AULA , ID_PERSONA , DIA_SEMANA , SOY_USUARIO , NOMBRE_USUARIO , VISTO , RESPUESTA,TIPO,ALQUILER) "
			+ "VALUES "
			+ "( NULL, #{NOMBRE_EVENTO}, #{MOTIVO} , #{FECHA} , #{HORA_INICIO} , #{HORA_FIN} , #{NUMERO_OCURRENCIA} , #{ID_AULA} , #{ID_PERSONA} , #{DIA_SEMANA}, #{SOY_USUARIO}, #{NOMBRE_USUARIO}, #{VISTO}, #{RESPUESTA}, #{TIPO}, #{ALQUILER})")
	void registrarPeticionDir(@Param("NOMBRE_EVENTO") String NOMBRE_EVENTO , @Param("MOTIVO") String MOTIVO ,@Param("FECHA") Date FECHA , @Param("HORA_INICIO") Time HORA_INICIO , @Param("HORA_FIN") Time HORA_FIN , @Param("NUMERO_OCURRENCIA") int NUMERO_OCURRENCIA ,@Param("ID_AULA") int ID_AULA,@Param("ID_PERSONA") int ID_PERSONA,@Param("DIA_SEMANA") int DIA_SEMANA,@Param("SOY_USUARIO") int SOY_USUARIO,@Param("NOMBRE_USUARIO") String NOMBRE_USUARIO,@Param("VISTO") int VISTO,@Param("RESPUESTA")int RESPUESTA,@Param("TIPO")int TIPO,@Param("ALQUILER")int ALQUILER);
	
	@Select("SELECT DISTINCT(pe.ID_PETICION), "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombrePersona, "
			+ "pe.NOMBRE_USUARIO as nombreUsuario, "
			+ "pe.ALQUILER as alquiler, "
			+ "pe.TIPO as tipoEvento, "
			+ "pe.EMAIL as email, "
			+ "pe.SOY_USUARIO as soyUsuario, "
			+ "pe.ID_PETICION as idPeticion, "
			+ "pe.NOMBRE_EVENTO as nombreEvento, "
			+ "pe.MOTIVO as motivo, "
			+ "pe.FECHA as dia, "
			+ "pe.HORA_INICIO as hInicio, "
			+ "pe.HORA_FIN as hFin, "
			+ "pe.NUMERO_OCURRENCIA as numRep, "
			+ "pe.VISTO as visto, "
			+ "pe.RESPUESTA as respuesta, "
			+ "pe.ID_AULA as idAulaPet, "
			+ "pe.HyF_SYS as fechaSistema, "
			+ "pe.DIA_SEMANA as numDiaSemana, "
			+ "a.NOMBRE as nombreAula "
			+ "FROM PETICION_EVENTO pe , AULA a , PERSONA p "
			+ "WHERE (pe.ID_AULA >= 22 AND pe.ID_AULA <= 32) "
			+ "AND pe.ID_AULA=a.IDAULA "
			+ "AND pe.ID_PERSONA=p.ID_PERSONA "
			+ "ORDER BY pe.ID_PETICION DESC")
	public List<Peticion> obtenerPeticionesLabos();
	@Select("SELECT DISTINCT ut.EMAIL "
			+ "FROM USUARIO_EMAIL ut "
			+ "WHERE ut.TIPO_USUARIO_IDTIPO_USUARIO=15")
	public String obtenerEmailLabo();
	@Select("SELECT DISTINCT ut.EMAIL "
			+ "FROM USUARIO_EMAIL ut "
			+ "WHERE ut.TIPO_USUARIO_IDTIPO_USUARIO=16")
	public String obtenerEmailMagna();
	@Select("SELECT CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) "
			+ "FROM PERSONA p "
			+ "WHERE p.ID_PERSONA=#{ID_PERSONA}")
	public String obtenerNombreUsuario(@Param("ID_PERSONA")int ID_PERSONA);
	@Select("SELECT DISTINCT ut.EMAIL "
			+ "FROM USUARIO_EMAIL ut "
			+ "WHERE ut.TIPO_USUARIO_IDTIPO_USUARIO=17")
	public String obtenerEmailAula();
	@Select("SELECT DISTINCT(pe.ID_PETICION), "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombrePersona, "
			+ "pe.NOMBRE_USUARIO as nombreUsuario, "
			+ "pe.SOY_USUARIO as soyUsuario, "
			+ "pe.ALQUILER as alquiler, "
			+ "pe.TIPO as tipoEvento, "
			+ "pe.EMAIL as email, "
			+ "pe.ID_PETICION as idPeticion, "
			+ "pe.NOMBRE_EVENTO as nombreEvento, "
			+ "pe.MOTIVO as motivo, "
			+ "pe.EMAIL as email, "
			+ "pe.FECHA as dia, "
			+ "pe.HORA_INICIO as hInicio, "
			+ "pe.HyF_SYS as fechaSistema, "
			+ "pe.HORA_FIN as hFin, "
			+ "pe.NUMERO_OCURRENCIA as numRep, "
			+ "pe.VISTO as visto, "
			+ "pe.RESPUESTA as respuesta, "
			+ "pe.ID_AULA as idAulaPet, "
			+ "pe.DIA_SEMANA as numDiaSemana, "
			+ "a.NOMBRE as nombreAula "
			+ "FROM PETICION_EVENTO pe , AULA a , PERSONA p "
			+ "WHERE (pe.ID_AULA >= 1 AND pe.ID_AULA <= 20) "
			+ "AND pe.ID_AULA=a.IDAULA "
			+ "AND pe.ID_PERSONA=p.ID_PERSONA "
			+ "ORDER BY pe.ID_PETICION DESC")
	public List<Peticion> obtenerPeticionesAulas();
	@Select("SELECT DISTINCT(pe.ID_PETICION), "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombrePersona, "
			+ "pe.NOMBRE_USUARIO as nombreUsuario, "
			+ "pe.SOY_USUARIO as soyUsuario, "
			+ "pe.ALQUILER as alquiler, "
			+ "pe.TIPO as tipoEvento, "
			+ "pe.ID_PETICION as idPeticion, "
			+ "pe.NOMBRE_EVENTO as nombreEvento, "
			+ "pe.MOTIVO as motivo, "
			+ "pe.EMAIL as email, "
			+ "pe.FECHA as dia, "
			+ "pe.HyF_SYS as fechaSistema, "
			+ "pe.HORA_INICIO as hInicio, "
			+ "pe.HORA_FIN as hFin, "
			+ "pe.NUMERO_OCURRENCIA as numRep, "
			+ "pe.VISTO as visto, "
			+ "pe.RESPUESTA as respuesta, "
			+ "pe.ID_AULA as idAulaPet, "
			+ "pe.DIA_SEMANA as numDiaSemana, "
			+ "a.NOMBRE as nombreAula "
			+ "FROM PETICION_EVENTO pe , AULA a , PERSONA p "
			+ "WHERE pe.ID_AULA = 21 "
			+ "AND pe.ID_AULA=a.IDAULA "
			+ "AND pe.ID_PERSONA=p.ID_PERSONA "
			+ "ORDER BY pe.ID_PETICION DESC")
	public List<Peticion> obtenerPeticionesMagna();
	@Update ("UPDATE PETICION_EVENTO "
			+ "SET VISTO=1 "
			+ "WHERE ID_PETICION=#{ID_PETICION}")
	public void marcarVisto(@Param("ID_PETICION") int ID_PETICION);
	@Update ("UPDATE PETICION_EVENTO "
			+ "SET RESPUESTA=1 "
			+ "WHERE ID_PETICION=#{ID_PETICION}")
	public void marcarAceptado(@Param("ID_PETICION") int ID_PETICION);
	@Update ("UPDATE PETICION_EVENTO "
			+ "SET RESPUESTA=0 "
			+ "WHERE ID_PETICION=#{ID_PETICION}")
	public void marcarRechazado(@Param("ID_PETICION") int ID_PETICION);
	@Update ("UPDATE PETICION_EVENTO "
			+ "SET RESPUESTA=-1 "
			+ "WHERE ID_PETICION=#{ID_PETICION}")
	public void revertir(@Param("ID_PETICION") int ID_PETICION);
	
	@Select("SELECT DISTINCT(pe.ID_PETICION), "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombrePersona, "
			+ "pe.NOMBRE_USUARIO as nombreUsuario, "
			+ "pe.SOY_USUARIO as soyUsuario, "
			+ "pe.ALQUILER as alquiler, "
			+ "pe.TIPO as tipoEvento, "
			+ "pe.ID_PETICION as idPeticion, "
			+ "pe.NOMBRE_EVENTO as nombreEvento, "
			+ "pe.MOTIVO as motivo, "
			+ "pe.FECHA as dia, "
			+ "pe.HyF_SYS as fechaSistema, "
			+ "pe.HORA_INICIO as hInicio, "
			+ "pe.HORA_FIN as hFin, "
			+ "pe.NUMERO_OCURRENCIA as numRep, "
			+ "pe.VISTO as visto, "
			+ "pe.EMAIL as email, "
			+ "pe.RESPUESTA as respuesta, "
			+ "pe.ID_AULA as idAulaPet, "
			+ "pe.DIA_SEMANA as numDiaSemana, "
			+ "a.NOMBRE as nombreAula "
			+ "FROM PETICION_EVENTO pe , AULA a , PERSONA p "
			+ "WHERE (pe.ID_AULA >= 22 AND pe.ID_AULA <= 32) "
			+ "AND pe.ID_AULA=a.IDAULA "
			+ "AND pe.ID_PERSONA=p.ID_PERSONA "			
			+ "AND pe.RESPUESTA=-1 "
			+ "ORDER BY pe.ID_PETICION DESC")
	public List<Peticion> obtenerLabosPendientes();
	@Select("SELECT DISTINCT(pe.ID_PETICION), "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombrePersona, "
			+ "pe.NOMBRE_USUARIO as nombreUsuario, "
			+ "pe.SOY_USUARIO as soyUsuario, "
			+ "pe.ALQUILER as alquiler, "
			+ "pe.TIPO as tipoEvento, "
			+ "pe.ID_PETICION as idPeticion, "
			+ "pe.NOMBRE_EVENTO as nombreEvento, "
			+ "pe.MOTIVO as motivo, "
			+ "pe.FECHA as dia, "
			+ "pe.HORA_INICIO as hInicio, "
			+ "pe.HORA_FIN as hFin, "
			+ "pe.EMAIL as email, "
			+ "pe.HyF_SYS as fechaSistema, "
			+ "pe.NUMERO_OCURRENCIA as numRep, "
			+ "pe.VISTO as visto, "
			+ "pe.RESPUESTA as respuesta, "
			+ "pe.ID_AULA as idAulaPet, "
			+ "pe.DIA_SEMANA as numDiaSemana, "
			+ "a.NOMBRE as nombreAula "
			+ "FROM PETICION_EVENTO pe, AULA a , PERSONA p "
			+ "WHERE (pe.ID_AULA >= 1 AND pe.ID_AULA <= 20) "
			+ "AND pe.ID_AULA=a.IDAULA "
			+ "AND pe.ID_PERSONA=p.ID_PERSONA "			
			+ "AND pe.RESPUESTA=-1 "
			+ "ORDER BY pe.ID_PETICION DESC")
	public List<Peticion> obtenerAulasPendientes();
	@Select("SELECT DISTINCT(pe.ID_PETICION), "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombrePersona, "
			+ "pe.NOMBRE_USUARIO as nombreUsuario, "
			+ "pe.SOY_USUARIO as soyUsuario, "
			+ "pe.ID_PETICION as idPeticion, "
			+ "pe.NOMBRE_EVENTO as nombreEvento, "
			+ "pe.MOTIVO as motivo, "
			+ "pe.ALQUILER as alquiler, "
			+ "pe.TIPO as tipoEvento, "
			+ "pe.FECHA as dia, "
			+ "pe.EMAIL as email, "
			+ "pe.HORA_INICIO as hInicio, "
			+ "pe.HORA_FIN as hFin, "
			+ "pe.HyF_SYS as fechaSistema, "
			+ "pe.NUMERO_OCURRENCIA as numRep, "
			+ "pe.VISTO as visto, "
			+ "pe.RESPUESTA as respuesta, "
			+ "pe.DIA_SEMANA as numDiaSemana, "
			+ "pe.ID_AULA as idAulaPet, "
			+ "a.NOMBRE as nombreAula "
			+ "FROM PETICION_EVENTO pe , AULA a , PERSONA p "
			+ "WHERE pe.ID_AULA = 21 "
			+ "AND pe.ID_AULA=a.IDAULA "
			+ "AND pe.ID_PERSONA=p.ID_PERSONA "			
			+ "AND pe.RESPUESTA=-1 "
			+ "ORDER BY pe.ID_PETICION DESC")
	public List<Peticion> obtenerMagnaPendientes();
	
	@Select("SELECT DISTINCT(pe.ID_PETICION), "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombrePersona, "
			+ "pe.NOMBRE_USUARIO as nombreUsuario, "
			+ "pe.SOY_USUARIO as soyUsuario, "
			+ "pe.ID_PETICION as idPeticion, "
			+ "pe.NOMBRE_EVENTO as nombreEvento, "
			+ "pe.MOTIVO as motivo, "
			+ "pe.ALQUILER as alquiler, "
			+ "pe.TIPO as tipoEvento, "
			+ "pe.FECHA as dia, "
			+ "pe.HyF_SYS as fechaSistema, "
			+ "pe.HORA_INICIO as hInicio, "
			+ "pe.HORA_FIN as hFin, "
			+ "pe.NUMERO_OCURRENCIA as numRep, "
			+ "pe.VISTO as visto, "
			+ "pe.EMAIL as email, "
			+ "pe.RESPUESTA as respuesta, "
			+ "pe.ID_AULA as idAulaPet, "
			+ "pe.DIA_SEMANA as numDiaSemana, "
			+ "a.NOMBRE as nombreAula "
			+ "FROM PETICION_EVENTO pe , AULA a , PERSONA p "
			+ "WHERE (pe.ID_AULA >= 22 AND pe.ID_AULA <= 32) "
			+ "AND pe.ID_AULA=a.IDAULA "
			+ "AND pe.ID_PERSONA=p.ID_PERSONA "			
			+ "AND pe.RESPUESTA=1 "
			+ "ORDER BY pe.ID_PETICION DESC")
	public List<Peticion> obtenerLabosAprobados();
	@Select("SELECT DISTINCT(pe.ID_PETICION), "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombrePersona, "
			+ "pe.NOMBRE_USUARIO as nombreUsuario, "
			+ "pe.SOY_USUARIO as soyUsuario, "
			+ "pe.ID_PETICION as idPeticion, "
			+ "pe.NOMBRE_EVENTO as nombreEvento, "
			+ "pe.MOTIVO as motivo, "
			+ "pe.FECHA as dia, "
			+ "pe.HORA_INICIO as hInicio, "
			+ "pe.HORA_FIN as hFin, "
			+ "pe.ALQUILER as alquiler, "
			+ "pe.TIPO as tipoEvento, "
			+ "pe.EMAIL as email, "
			+ "pe.HyF_SYS as fechaSistema, "
			+ "pe.NUMERO_OCURRENCIA as numRep, "
			+ "pe.VISTO as visto, "
			+ "pe.RESPUESTA as respuesta, "
			+ "pe.ID_AULA as idAulaPet, "
			+ "pe.DIA_SEMANA as numDiaSemana, "
			+ "a.NOMBRE as nombreAula "
			+ "FROM PETICION_EVENTO pe, AULA a , PERSONA p "
			+ "WHERE (pe.ID_AULA >= 1 AND pe.ID_AULA <= 20) "
			+ "AND pe.ID_AULA=a.IDAULA "
			+ "AND pe.ID_PERSONA=p.ID_PERSONA "			
			+ "AND pe.RESPUESTA=1 "
			+ "ORDER BY pe.ID_PETICION DESC")
	public List<Peticion> obtenerAulasAprobadas();
	@Select("SELECT DISTINCT(pe.ID_PETICION), "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombrePersona, "
			+ "pe.NOMBRE_USUARIO as nombreUsuario, "
			+ "pe.SOY_USUARIO as soyUsuario, "
			+ "pe.ID_PETICION as idPeticion, "
			+ "pe.NOMBRE_EVENTO as nombreEvento, "
			+ "pe.MOTIVO as motivo, "
			+ "pe.ALQUILER as alquiler, "
			+ "pe.TIPO as tipoEvento, "
			+ "pe.FECHA as dia, "
			+ "pe.EMAIL as email, "
			+ "pe.HORA_INICIO as hInicio, "
			+ "pe.HORA_FIN as hFin, "
			+ "pe.HyF_SYS as fechaSistema, "
			+ "pe.NUMERO_OCURRENCIA as numRep, "
			+ "pe.VISTO as visto, "
			+ "pe.RESPUESTA as respuesta, "
			+ "pe.DIA_SEMANA as numDiaSemana, "
			+ "pe.ID_AULA as idAulaPet, "
			+ "a.NOMBRE as nombreAula "
			+ "FROM PETICION_EVENTO pe , AULA a , PERSONA p "
			+ "WHERE pe.ID_AULA = 21 "
			+ "AND pe.ID_AULA=a.IDAULA "
			+ "AND pe.ID_PERSONA=p.ID_PERSONA "			
			+ "AND pe.RESPUESTA=1 "
			+ "ORDER BY pe.ID_PETICION DESC")
	public List<Peticion> obtenerMagnaAprobadas();
	
	@Select("SELECT DISTINCT(pe.ID_PETICION), "
			+ "pe.ID_PERSONA as idPersona, "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombrePersona, "
			+ "pe.NOMBRE_USUARIO as nombreUsuario, "
			+ "pe.SOY_USUARIO as soyUsuario, "
			+ "pe.ID_PETICION as idPeticion, "
			+ "pe.NOMBRE_EVENTO as nombreEvento, "
			+ "pe.MOTIVO as motivo, "
			+ "pe.FECHA as dia, "
			+ "pe.ALQUILER as alquiler, "
			+ "pe.TIPO as tipoEvento, "
			+ "pe.EMAIL as email, "
			+ "pe.HORA_INICIO as hInicio, "
			+ "pe.HORA_FIN as hFin, "
			+ "pe.HyF_SYS as fechaSistema, "
			+ "pe.NUMERO_OCURRENCIA as numRep, "
			+ "pe.DIA_SEMANA as numDiaSemana, "
			+ "pe.VISTO as visto, "
			+ "pe.RESPUESTA as respuesta, "
			+ "pe.ID_AULA as idAulaPet, "
			+ "a.NOMBRE as nombreAula "
			+ "FROM PETICION_EVENTO pe , AULA a , PERSONA p "
			+ "WHERE (pe.ID_AULA >= 22 AND pe.ID_AULA <= 32) "
			+ "AND pe.ID_AULA=a.IDAULA "
			+ "AND pe.ID_PERSONA=#{ID_PERSONA} "
			+ "AND pe.ID_PERSONA=p.ID_PERSONA "
			+ "ORDER BY pe.ID_PETICION DESC")
	public List<Peticion> obtenerMisPeticionesLabos(@Param("ID_PERSONA") int ID_PERSONA);
	@Select("SELECT DISTINCT(pe.ID_PETICION), "
			+ "pe.ID_PERSONA as idPersona, "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombrePersona, "
			+ "pe.NOMBRE_USUARIO as nombreUsuario, "
			+ "pe.SOY_USUARIO as soyUsuario, "
			+ "pe.ID_PETICION as idPeticion, "
			+ "pe.NOMBRE_EVENTO as nombreEvento, "
			+ "pe.MOTIVO as motivo, "
			+ "pe.FECHA as dia, "
			+ "pe.ALQUILER as alquiler, "
			+ "pe.TIPO as tipoEvento, "
			+ "pe.EMAIL as email, "
			+ "pe.HORA_INICIO as hInicio, "
			+ "pe.HORA_FIN as hFin, "
			+ "pe.HyF_SYS as fechaSistema, "
			+ "pe.NUMERO_OCURRENCIA as numRep, "
			+ "pe.DIA_SEMANA as numDiaSemana, "
			+ "pe.VISTO as visto, "
			+ "pe.RESPUESTA as respuesta, "
			+ "pe.ID_AULA as idAulaPet, "
			+ "a.NOMBRE as nombreAula "
			+ "FROM PETICION_EVENTO pe , AULA a , PERSONA p "
			+ "WHERE (pe.ID_AULA >= 1 AND pe.ID_AULA <= 20) "
			+ "AND pe.ID_AULA=a.IDAULA "
			+ "AND pe.ID_PERSONA=#{ID_PERSONA} "
			+ "AND pe.ID_PERSONA=p.ID_PERSONA "
			+ "ORDER BY pe.ID_PETICION DESC")
	public List<Peticion> obtenerMisPeticionesAulas(@Param("ID_PERSONA") int ID_PERSONA);
	@Select("SELECT DISTINCT(pe.ID_PETICION), "
			+ "pe.ID_PERSONA as idPersona, "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombrePersona, "
			+ "pe.NOMBRE_USUARIO as nombreUsuario, "
			+ "pe.SOY_USUARIO as soyUsuario, "
			+ "pe.ID_PETICION as idPeticion, "
			+ "pe.NOMBRE_EVENTO as nombreEvento, "
			+ "pe.MOTIVO as motivo, "
			+ "pe.EMAIL as email, "
			+ "pe.FECHA as dia, "
			+ "pe.ALQUILER as alquiler, "
			+ "pe.TIPO as tipoEvento, "
			+ "pe.HyF_SYS as fechaSistema, "
			+ "pe.HORA_INICIO as hInicio, "
			+ "pe.HORA_FIN as hFin, "
			+ "pe.NUMERO_OCURRENCIA as numRep, "
			+ "pe.DIA_SEMANA as numDiaSemana, "
			+ "pe.VISTO as visto, "
			+ "pe.RESPUESTA as respuesta, "
			+ "pe.ID_AULA as idAulaPet, "
			+ "a.NOMBRE as nombreAula "
			+ "FROM PETICION_EVENTO pe , AULA a , PERSONA p "
			+ "WHERE pe.ID_AULA=21 "
			+ "AND pe.ID_AULA=a.IDAULA "
			+ "AND pe.ID_PERSONA=#{ID_PERSONA} "
			+ "AND pe.ID_PERSONA=p.ID_PERSONA "
			+ "ORDER BY pe.ID_PETICION DESC")
	public List<Peticion> obtenerMisPeticionesMagna(@Param("ID_PERSONA") int ID_PERSONA);
	@Select("SELECT DISTINCT(pe.ID_PETICION),"
			+ "pe.ID_PERSONA as idPersona, "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombrePersona, "
			+ "pe.ID_PETICION as idPeticion, "
			+ "pe.SOY_USUARIO as soyUsuario, "
			+ "pe.NOMBRE_EVENTO as nombreEvento, "
			+ "pe.MOTIVO as motivo, "
			+ "pe.FECHA as dia, "
			+ "pe.ALQUILER as alquiler, "
			+ "pe.TIPO as tipoEvento, "
			+ "pe.HyF_SYS as fechaSistema, "
			+ "pe.NOMBRE_USUARIO as nombreUsuario, "
			+ "pe.HORA_INICIO as hInicio, "
			+ "pe.HORA_FIN as hFin, "
			+ "pe.NUMERO_OCURRENCIA as numRep, "
			+ "pe.VISTO as visto, "
			+ "pe.EMAIL as email, "
			+ "pe.RESPUESTA as respuesta, "
			+ "pe.DIA_SEMANA as numDiaSemana, "
			+ "pe.ID_AULA as idAulaPet, "
			+ "a.NOMBRE as nombreAula "
			+ "FROM PETICION_EVENTO pe , AULA a , PERSONA p "
			+ "WHERE pe.ID_AULA=#{ID_AULA} "
			+ "AND NOT(pe.ID_PETICION=#{ID_PET}) "
			+ "AND pe.ID_AULA=a.IDAULA "
			+ "AND pe.ID_PERSONA=p.ID_PERSONA "
			+ "AND pe.DIA_SEMANA=#{dSem} "
			+ "AND pe.RESPUESTA=-1 "
			+ "AND ((pe.HORA_INICIO <  #{hInicio} AND  pe.HORA_FIN < #{hFin} AND  pe.HORA_FIN > #{hInicio}) "
			+ "OR (pe.HORA_INICIO =  #{hInicio} AND  pe.HORA_FIN = #{hFin}) "
			+ "OR (pe.HORA_INICIO >  #{hInicio} AND  pe.HORA_FIN < #{hFin}) "
			+ "OR (pe.HORA_INICIO < #{hInicio} AND pe.HORA_FIN > #{hFin}) "
			+ "OR (pe.HORA_INICIO < #{hInicio} AND pe.HORA_FIN =#{hFin}) "
			+ "OR (pe.HORA_INICIO = #{hInicio} AND pe.HORA_FIN < #{hFin}) "
			+ "OR (pe.HORA_INICIO=#{hInicio} AND pe.HORA_FIN>#{hFin}) "
			+ "OR (pe.HORA_INICIO>#{hInicio} AND pe.HORA_FIN=#{hFin}) "
			+ "OR (pe.HORA_INICIO>#{hInicio} AND HORA_INICIO<#{hFin} AND pe.HORA_FIN>#{hFin})) "
			+ "ORDER BY pe.ID_PETICION DESC ")
	public List<Peticion> obtenerListaPosibleCrucePet(@Param("ID_PET") int ID_PET,@Param("ID_AULA") int ID_AULA,@Param("hInicio") Time hInicio,@Param("hFin")Time hFin,@Param("dSem")int dSem);
	@Select("SELECT DISTINCT(pe.ID_PETICION),"
			+ "pe.ID_PERSONA as idPersona, "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombrePersona, "
			+ "pe.ID_PETICION as idPeticion, "
			+ "pe.SOY_USUARIO as soyUsuario, "
			+ "pe.NOMBRE_EVENTO as nombreEvento, "
			+ "pe.MOTIVO as motivo, "
			+ "pe.FECHA as dia, "
			+ "pe.ALQUILER as alquiler, "
			+ "pe.TIPO as tipoEvento, "
			+ "pe.EMAIL as email, "
			+ "pe.HyF_SYS as fechaSistema, "
			+ "pe.NOMBRE_USUARIO as nombreUsuario, "
			+ "pe.HORA_INICIO as hInicio, "
			+ "pe.HORA_FIN as hFin, "
			+ "pe.NUMERO_OCURRENCIA as numRep, "
			+ "pe.VISTO as visto, "
			+ "pe.RESPUESTA as respuesta, "
			+ "pe.DIA_SEMANA as numDiaSemana, "
			+ "pe.ID_AULA as idAulaPet, "
			+ "a.NOMBRE as nombreAula "
			+ "FROM PETICION_EVENTO pe , AULA a , PERSONA p "
			+ "WHERE pe.ID_AULA=#{ID_AULA} "
			+ "AND pe.ID_AULA=a.IDAULA "
			+ "AND pe.ID_PERSONA=p.ID_PERSONA "
			+ "AND pe.DIA_SEMANA=#{dSem} "
			+ "AND pe.RESPUESTA=-1 "
			+ "AND ((pe.HORA_INICIO <  #{hInicio} AND  pe.HORA_FIN < #{hFin} AND  pe.HORA_FIN > #{hInicio}) "
			+ "OR (pe.HORA_INICIO =  #{hInicio} AND  pe.HORA_FIN = #{hFin}) "
			+ "OR (pe.HORA_INICIO >  #{hInicio} AND  pe.HORA_FIN < #{hFin}) "
			+ "OR (pe.HORA_INICIO < #{hInicio} AND pe.HORA_FIN > #{hFin}) "
			+ "OR (pe.HORA_INICIO < #{hInicio} AND pe.HORA_FIN =#{hFin}) "
			+ "OR (pe.HORA_INICIO = #{hInicio} AND pe.HORA_FIN < #{hFin}) "
			+ "OR (pe.HORA_INICIO=#{hInicio} AND pe.HORA_FIN>#{hFin}) "
			+ "OR (pe.HORA_INICIO>#{hInicio} AND pe.HORA_FIN=#{hFin}) "
			+ "OR (pe.HORA_INICIO>#{hInicio} AND HORA_INICIO<#{hFin} AND pe.HORA_FIN>#{hFin})) "
			+ "ORDER BY pe.ID_PETICION DESC ")
	public List<Peticion> obtenerListaPosibleCrucePetDir(@Param("ID_AULA") int ID_AULA,@Param("hInicio") Time hInicio,@Param("hFin")Time hFin,@Param("dSem")int dSem);
	
	@Select ("SELECT DISTINCT(h.IDHORARIO_CLASE), "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombreDocente, "
			+ "h.IDHORARIO_CLASE as idClase, "
			+ "c.CURSO_PERIODO_NOMBRE as curso, "
			+ "g.GRUPO_NUMERO as grupo, "
			+ "h.AULA as aula, "
			+ "h.DIA as dia, "
			+ "h.HORA_INICIO as hInicio, "
			+ "h.HORA_FIN as hFin "
			+ "FROM PERSONA p , DOCENTE d , CURSO_PERIODO c , GRUPO g , AULA a , HORARIO_CLASE h "
			+ "WHERE h.HORARIO_CLASE_PERIODO=#{periodo} "
			+ "AND h.GRUPO_IDGRUPO=g.IDGRUPO "
			+ "AND h.DOCENTE_IDDOCENTE=d.IDDOCENTE "
			+ "AND d.PERSONA_ID_PERSONA=p.ID_PERSONA "
			+ "AND h.GRUPO_IDGRUPO=g.IDGRUPO "
			+ "AND g.CURSO_IDCURSO=c.IDCURSO_PERIODO "
			+ "AND h.AULA_IDAULA=a.IDAULA "
			+ "AND h.AULA_IDAULA=#{idAula} "
			+ "AND h.DIA=#{dia} "
			+ "AND ((h.HORA_INICIO <  #{hInicio} AND  h.HORA_FIN < #{hFin} AND  h.HORA_FIN > #{hInicio}) "
			+ "OR (h.HORA_INICIO =  #{hInicio} AND  h.HORA_FIN = #{hFin}) "
			+ "OR (h.HORA_INICIO >  #{hInicio} AND  h.HORA_FIN < #{hFin}) "
			+ "OR (h.HORA_INICIO < #{hInicio} AND h.HORA_FIN > #{hFin}) "
			+ "OR (h.HORA_INICIO < #{hInicio} AND h.HORA_FIN =#{hFin}) "
			+ "OR (h.HORA_INICIO = #{hInicio} AND h.HORA_FIN < #{hFin}) "
			+ "OR (h.HORA_INICIO=#{hInicio} AND h.HORA_FIN>#{hFin}) "
			+ "OR (h.HORA_INICIO>#{hInicio} AND h.HORA_FIN=#{hFin}) "
			+ "OR (h.HORA_INICIO>#{hInicio} AND HORA_INICIO<#{hFin} AND h.HORA_FIN>#{hFin})) "
			+ "ORDER BY h.DIA,h.HORA_INICIO,p.PERSONA_APPATERNO")
	public List<RegistroHorario> obtenerCruceHorarios(@Param("periodo") String periodo,@Param("hInicio") Time hInicio,
			@Param("hFin") Time hFin,@Param("dia") int dia,@Param("idAula") int idAula);
	@Select("SELECT DISTINCT(pe.ID_PETICION),"
			+ "pe.ID_PERSONA as idPersona, "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombrePersona, "
			+ "pe.NOMBRE_USUARIO as nombreUsuario, "
			+ "pe.SOY_USUARIO as soyUsuario, "
			+ "pe.ID_PETICION as idPeticion, "
			+ "pe.NOMBRE_EVENTO as nombreEvento, "
			+ "pe.MOTIVO as motivo, "
			+ "pe.FECHA as dia, "
			+ "pe.EMAIL as email, "
			+ "pe.HyF_SYS as fechaSistema, "
			+ "pe.HORA_INICIO as hInicio, "
			+ "pe.HORA_FIN as hFin, "
			+ "pe.NUMERO_OCURRENCIA as numRep, "
			+ "pe.VISTO as visto, "
			+ "pe.ALQUILER as alquiler, "
			+ "pe.TIPO as tipoEvento, "
			+ "pe.RESPUESTA as respuesta, "
			+ "pe.DIA_SEMANA as numDiaSemana, "
			+ "pe.ID_AULA as idAulaPet, "
			+ "a.NOMBRE as nombreAula "
			+ "FROM PETICION_EVENTO pe , AULA a , PERSONA p "
			+ "WHERE pe.ID_AULA=#{ID_AULA} "
			+ "AND NOT(pe.ID_PETICION=#{ID_PET}) "
			+ "AND pe.ID_AULA=a.IDAULA "
			+ "AND pe.ID_PERSONA=p.ID_PERSONA "
			+ "AND pe.DIA_SEMANA=#{dSem} "
			+ "AND pe.RESPUESTA=1 "
			+ "AND ((pe.HORA_INICIO <  #{hInicio} AND  pe.HORA_FIN < #{hFin} AND  pe.HORA_FIN > #{hInicio}) "
			+ "OR (pe.HORA_INICIO =  #{hInicio} AND  pe.HORA_FIN = #{hFin}) "
			+ "OR (pe.HORA_INICIO >  #{hInicio} AND  pe.HORA_FIN < #{hFin}) "
			+ "OR (pe.HORA_INICIO < #{hInicio} AND pe.HORA_FIN > #{hFin}) "
			+ "OR (pe.HORA_INICIO < #{hInicio} AND pe.HORA_FIN =#{hFin}) "
			+ "OR (pe.HORA_INICIO = #{hInicio} AND pe.HORA_FIN < #{hFin}) "
			+ "OR (pe.HORA_INICIO=#{hInicio} AND pe.HORA_FIN>#{hFin}) "
			+ "OR (pe.HORA_INICIO>#{hInicio} AND pe.HORA_FIN=#{hFin}) "
			+ "OR (pe.HORA_INICIO>#{hInicio} AND HORA_INICIO<#{hFin} AND pe.HORA_FIN>#{hFin})) "
			+ "ORDER BY pe.ID_PETICION DESC ")
	public List<Peticion> obtenerListaPosibleCrucePetAprob(@Param("ID_PET") int ID_PET,@Param("ID_AULA") int ID_AULA,@Param("hInicio") Time hInicio,@Param("hFin")Time hFin,@Param("dSem")int dSem);
	@Select ("SELECT DISTINCT(h.IDHORARIO_CLASE), "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombreDocente, "
			+ "h.IDHORARIO_CLASE as idClase, "
			+ "c.CURSO_PERIODO_NOMBRE as curso, "
			+ "g.GRUPO_NUMERO as grupo, "
			+ "h.AULA as aula, "
			+ "h.DIA as dia, "
			+ "h.HORA_INICIO as hInicio, "
			+ "h.HORA_FIN as hFin "
			+ "FROM PERSONA p , DOCENTE d , CURSO_PERIODO c , GRUPO g , AULA a , HORARIO_CLASE h "
			+ "WHERE h.HORARIO_CLASE_PERIODO=#{periodo} "
			+ "AND h.GRUPO_IDGRUPO=g.IDGRUPO "
			+ "AND h.DOCENTE_IDDOCENTE=d.IDDOCENTE "
			+ "AND d.PERSONA_ID_PERSONA=p.ID_PERSONA "
			+ "AND h.GRUPO_IDGRUPO=g.IDGRUPO "
			+ "AND g.CURSO_IDCURSO=c.IDCURSO_PERIODO "
			+ "AND h.AULA_IDAULA=a.IDAULA "
			+ "AND h.AULA_IDAULA=#{idAula} "
			+ "AND h.DIA=#{dia} "
			+ "AND ((h.HORA_INICIO <  #{hInicio} AND  h.HORA_FIN < #{hFin} AND  h.HORA_FIN > #{hInicio}) "
			+ "OR (h.HORA_INICIO =  #{hInicio} AND  h.HORA_FIN = #{hFin}) "
			+ "OR (h.HORA_INICIO >  #{hInicio} AND  h.HORA_FIN < #{hFin}) "
			+ "OR (h.HORA_INICIO < #{hInicio} AND h.HORA_FIN > #{hFin}) "
			+ "OR (h.HORA_INICIO < #{hInicio} AND h.HORA_FIN =#{hFin}) "
			+ "OR (h.HORA_INICIO = #{hInicio} AND h.HORA_FIN < #{hFin}) "
			+ "OR (h.HORA_INICIO=#{hInicio} AND h.HORA_FIN>#{hFin}) "
			+ "OR (h.HORA_INICIO>#{hInicio} AND h.HORA_FIN=#{hFin}) "
			+ "OR (h.HORA_INICIO>#{hInicio} AND HORA_INICIO<#{hFin} AND h.HORA_FIN>#{hFin})) "
			+ "ORDER BY h.DIA,h.HORA_INICIO,p.PERSONA_APPATERNO")
	public List<RegistroHorario> obtenerCruceHorariosDir(@Param("periodo") String periodo,@Param("hInicio") Time hInicio,
			@Param("hFin") Time hFin,@Param("dia") int dia,@Param("idAula") int idAula);
	@Select("SELECT DISTINCT(pe.ID_PETICION),"
			+ "pe.ID_PERSONA as idPersona, "
			+ "CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombrePersona, "
			+ "pe.NOMBRE_USUARIO as nombreUsuario, "
			+ "pe.SOY_USUARIO as soyUsuario, "
			+ "pe.ID_PETICION as idPeticion, "
			+ "pe.NOMBRE_EVENTO as nombreEvento, "
			+ "pe.MOTIVO as motivo, "
			+ "pe.FECHA as dia, "
			+ "pe.EMAIL as email, "
			+ "pe.HyF_SYS as fechaSistema, "
			+ "pe.HORA_INICIO as hInicio, "
			+ "pe.HORA_FIN as hFin, "
			+ "pe.NUMERO_OCURRENCIA as numRep, "
			+ "pe.VISTO as visto, "
			+ "pe.ALQUILER as alquiler, "
			+ "pe.TIPO as tipoEvento, "
			+ "pe.RESPUESTA as respuesta, "
			+ "pe.DIA_SEMANA as numDiaSemana, "
			+ "pe.ID_AULA as idAulaPet, "
			+ "a.NOMBRE as nombreAula "
			+ "FROM PETICION_EVENTO pe , AULA a , PERSONA p "
			+ "WHERE pe.ID_AULA=#{ID_AULA} "
			+ "AND pe.ID_AULA=a.IDAULA "
			+ "AND pe.ID_PERSONA=p.ID_PERSONA "
			+ "AND pe.DIA_SEMANA=#{dSem} "
			+ "AND pe.RESPUESTA=1 "
			+ "AND ((pe.HORA_INICIO <  #{hInicio} AND  pe.HORA_FIN < #{hFin} AND  pe.HORA_FIN > #{hInicio}) "
			+ "OR (pe.HORA_INICIO =  #{hInicio} AND  pe.HORA_FIN = #{hFin}) "
			+ "OR (pe.HORA_INICIO >  #{hInicio} AND  pe.HORA_FIN < #{hFin}) "
			+ "OR (pe.HORA_INICIO < #{hInicio} AND pe.HORA_FIN > #{hFin}) "
			+ "OR (pe.HORA_INICIO < #{hInicio} AND pe.HORA_FIN =#{hFin}) "
			+ "OR (pe.HORA_INICIO = #{hInicio} AND pe.HORA_FIN < #{hFin}) "
			+ "OR (pe.HORA_INICIO=#{hInicio} AND pe.HORA_FIN>#{hFin}) "
			+ "OR (pe.HORA_INICIO>#{hInicio} AND pe.HORA_FIN=#{hFin}) "
			+ "OR (pe.HORA_INICIO>#{hInicio} AND HORA_INICIO<#{hFin} AND pe.HORA_FIN>#{hFin})) "
			+ "ORDER BY pe.ID_PETICION DESC ")
	public List<Peticion> obtenerListaPosibleCrucePetAprobDir(@Param("ID_AULA") int ID_AULA,@Param("hInicio") Time hInicio,@Param("hFin")Time hFin,@Param("dSem")int dSem);
	@Select("SELECT CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombrePersona "
			+ "FROM PETICION_EVENTO pe ,PERSONA p,USUARIO u "
			+ "WHERE u.PERSONA_ID_PERSONA=p.ID_PERSONA "
			+ "AND p.ID_PERSONA=#{ID_PERSONA} "
			+ "AND u.SISTEMA_ID_SISTEMA=11 "
			+ "AND u.TIPO_USUARIO_IDTIPO_USUARIO=18")
	public List<String> obtenerIdCEUPS(@Param("ID_PERSONA") int ID_PERSONA);
	@Select("SELECT CONCAT (p.PERSONA_APPATERNO,' ',p.PERSONA_APMATERNO,' , ',p.PERSONA_NOMBRE) as nombrePersona "
			+ "FROM PETICION_EVENTO pe ,PERSONA p,USUARIO u "
			+ "WHERE u.PERSONA_ID_PERSONA=p.ID_PERSONA "
			+ "AND p.ID_PERSONA=#{ID_PERSONA} "
			+ "AND u.SISTEMA_ID_SISTEMA=11 "
			+ "AND u.TIPO_USUARIO_IDTIPO_USUARIO=19")
	public List<String> obtenerIdUPG(@Param("ID_PERSONA") int ID_PERSONA);
	
}
